package sh.service;

import sh.orm.query.Page;
import sh.orm.query.Pageable;
import sh.dto.BookBoardDto;
import sh.model.Book;

import java.io.File;
import java.util.List;

public interface BookService {

	/**
	 * 新增一本书
	 * @param book
	 */
	public void add(Book book);

	/**
	 * 删除书本
	 * @param id
	 */
	public void remove(Long id);

	/**
	 * 编辑书本信息
	 * @param book
	 */
	public void edit(Book book);

	/**
	 * 返回一个book的信息
	 * @param id
	 * @return
	 */
	public Book get(Long id) ;

	/**
	 * 向数据库里插入一条book的记录
	 * @param book
	 * @param upFile
	 * @return
	 */
	public boolean save(Book book,File upFile);
	
	/**
	 * 返回需要的字段
	 * @return
	 */
	public List<Book> getAll();

	/**
	 * 根据用户选出该用户的图书列表
	 * @param userId
	 * @return
	 */
	public List<Book> getByUserId(Long userId);

	/**
	 * 根据用户选出该用户的图书列表，带分页功能
	 * @param userId
	 * @param pageable 分页参数
	 * @return
	 */
	public Page<Book> getPageByUserId(Long userId, Pageable pageable);

	/**
	 * 根据书的销量查询前n个
	 * @param n
	 * @return
	 */
   public List<BookBoardDto> getPrevious(int n) ;

	/**
	 * 根据书名查询
	 * @param bookName
	 * @return
	 */
	public List<Book> getByBookName(String bookName);

	/**
	 * 根据作者名字查询
	 * @param author
	 * @return
	 */
	public List<Book> getByAuthor(String author);

	/**
	 * 根据价格查询
	 * @param price
	 * @return
	 */
	public List<Book> getByPriceLowerThan(float price);

	/**
	 * 根据价格区间查询
	 * @param min
	 * @param max
	 * @return
	 * @throws Exception
	 */
	public List<Book> getByPrice(float min,float max);

}
